package com.link2room.rodimus.facade;

import com.link2room.common.jpa.result.QueryResult;
import com.link2room.rodimus.dto.param.api.GroupBuyingListParamDto;
import com.link2room.rodimus.dto.param.api.GroupBuyingTeamFindParamDto;
import com.link2room.rodimus.dto.param.base.GroupBuyingAutoCancelParamDto;
import com.link2room.rodimus.dto.param.base.GroupBuyingAutoRefundParamDto;
import com.link2room.rodimus.dto.param.base.GroupBuyingManualRefundParamDto;
import com.link2room.rodimus.dto.param.manager.GroupBuyingCreateManagerParamDto;
import com.link2room.rodimus.dto.param.manager.GroupBuyingListManagerParamDto;
import com.link2room.rodimus.dto.param.manager.GroupBuyingTeamUpdateParam;
import com.link2room.rodimus.dto.param.manager.GroupBuyingUpdateManagerParamDto;
import com.link2room.rodimus.dto.result.base.GroupBuyingBaseDto;
import com.link2room.rodimus.dto.result.base.GroupBuyingTeamDto;

/**
 * Created by LN on 2017/12/5
 */
public interface IGroupBuyingManagerFacadeService {
    QueryResult<GroupBuyingBaseDto> listGroupBuyingBaseDto(GroupBuyingListManagerParamDto paramDto) throws Exception;


    GroupBuyingBaseDto groupBuyingBaseDto(GroupBuyingListManagerParamDto paramDto) throws Exception;
    void createGroupBuying(GroupBuyingCreateManagerParamDto paramDto) throws Exception;

    void updateGroupBuying(GroupBuyingUpdateManagerParamDto paramDto) throws Exception;

    GroupBuyingTeamDto groupBuyingTeam(GroupBuyingTeamFindParamDto paramDto) throws Exception;

    void updateGroupBuyingTeam(GroupBuyingTeamUpdateParam param) throws Exception;

    /**
     * 自动取消
     * @param autoCancelParamDto
     */
    void autoCancel(GroupBuyingAutoCancelParamDto autoCancelParamDto) throws Exception;

    /**
     * 自动退款
     * @param paramDto
     * @throws Exception
     */
    void autoRefund(GroupBuyingAutoRefundParamDto paramDto) throws Exception;

    /**
     * 人工退款
     * @param paramDto
     */
    void manualRefund(GroupBuyingManualRefundParamDto paramDto) throws Exception;
}
